package com.warm.base.design.b_observer;

/**
 * @Date: 2019/11/21 14:07
 * @Author: LChuang
 * @Description: 观察者模式(行为型)
 *
 *      定义对象间的一种一对多的依赖关系，当一个对象的状态发生变化时，所有依赖于它的对象都得到通知并被自动更新。
 */
public class Client {

    /**
     * Subject: "被观察" 的角色，它将所有观察者对象的引用保存在一个<集合>中。
     * ConcreteSubject: 具体被观察者
     * Observer: 抽象的 "观察" 角色，它定义了一个<更新接口>，使得在被观察者状态发生改变时通知自己。
     * ConcreteObserver: 具体的观察者。
     */
    public static void main(String[] args) {
        Subject subject = new ConcreteSubject();
        Observer obs1 = new ConcreteObserverA();
        Observer obs2 = new ConcreteObserverB();
        subject.register(obs1);
        subject.register(obs2);
        subject.notifyObservers();
    }
}
